package com.jy.modules.cims.component.api;

import com.jy.modules.cims.data.interact.api.JieYueResponseData;
import com.jy.modules.cims.data.interact.api.request.RequestAttachSearchDTO;
import com.jy.modules.cims.data.interact.api.request.RequestLoanAbortDTO;
import com.jy.modules.cims.data.interact.api.request.RequestLoanRedemptionReceiveDTO;
import com.jy.modules.cims.data.interact.api.request.RequestNoiteCreditRedemptionDTO;
import com.jy.modules.cims.data.interact.api.request.RequestNoiteFinishListDTO;
import com.jy.modules.cims.data.interact.api.request.RequestRefundPlanSearchDTO;
import com.jy.modules.cims.data.interact.api.request.RequestTransferResultSearchDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestAccountDrawSearchDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestBankInfoCheckSearchDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestDebitFundsAccountdcardDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestFreezeFundsAssestDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestFundsAccountDrawDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestFundsCardupdateSearchDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestMessageFundsSendDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestRepaymentFundsNoticeDTO;
import com.jy.modules.cims.data.interact.api.request.funds.RequestTransferFundsAccountdtorepayDTO;

/**
 * @description 捷越调用外围系统接口组件
 * @author shengzhoutao
 * 
 */
public interface IJieYueSend {

	/**
	 * @description 进件调配完成通知(实时触发调用)
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @param returnClass
	 *            返回对象的Class
	 * @return JieYueResponseData, 属性data类型:JieYueMessage
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData noticeLoanFinish(final String cooperorgCode, final RequestNoiteFinishListDTO content);

	/**
	 * @description 债权调配完成通知(实时触发调用)
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @param returnClass
	 *            返回对象的Class
	 * @return JieYueResponseData, 属性data类型:JieYueMessage
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData noticeCreditFinish(final String cooperorgCode, final RequestNoiteFinishListDTO content);

	/**
	 * @description 赎回通知(实时触发调用)
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @param returnClass
	 *            返回对象的Class
	 * @return JieYueResponseData, 属性data类型:JieYueMessage
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData noticeCreditRedemption(final String cooperorgCode, final RequestNoiteCreditRedemptionDTO content);

	/**
	 * @description 回购通知(实时触发调用)
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @param returnClass
	 *            返回对象的Class
	 * @return JieYueResponseData, 属性data类型:JieYueMessage
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData noticeLoanRedemption(final String cooperorgCode, final RequestLoanRedemptionReceiveDTO content);

	/**
	 * @description 查询贷款审批结果
	 * @param cooperorgCode
	 *            机构编码
	 * @param loanNumber
	 *            合同编号
	 * @return JieYueResponseData, 属性data类型:ResponseAuditResultSearchDTO
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData searchAuditResult(final String cooperorgCode, final String loanNumber);

	/**
	 * @description 查询贷款放款结果
	 * @param cooperorgCode
	 *            机构编码
	 * @param loanNumber
	 *            合同编号
	 * @return JieYueResponseData, 属性data类型:ResponseLoanResultSearchDTO
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData searchLoanResult(final String cooperorgCode, final String loanNumber);

	/**
	 * @description 贷款进件终止(实时触发调用)
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @return JieYueResponseData, data类型:JieYueMessage
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData abortLoan(final String cooperorgCode, final RequestLoanAbortDTO content);

	/**
	 * @description 查询债权审批结果
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @return JieYueResponseData, 属性data类型:ResponseTransferResultSearchDTO
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData searchTransferResult(final String cooperorgCode, final RequestTransferResultSearchDTO content);

	/**
	 * @description 查询放款电子签章附件信息
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @return JieYueResponseData, 属性data类型:ResponseAttachSearchDTO
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData searchLoanSignature(final String cooperorgCode, final RequestAttachSearchDTO content);

	/**
	 * @description 查询贷款还款计划信息
	 * @param cooperorgCode
	 *            机构编码
	 * @param content
	 *            请求主体对象
	 * @return JieYueResponseData, 属性data类型:ResponseRefundPlanSearchDTO
	 * 
	 * @author shengzhoutao
	 * @Date 2016-11-10
	 */
	public JieYueResponseData searchLoanRefundplan(final String cooperorgCode, final RequestRefundPlanSearchDTO content);

	/**
	 * 
	 * @author zhangmi
	 * @date 2017年2月28日
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData searchCreditRefundplan(final String cooperorgCode, final RequestRefundPlanSearchDTO content);

	/**
	 * 账户开户查询
	 * 
	 * @author zhangmi
	 * @date 2017年4月26日
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData searchFundsAccountCheck(final String cooperorgCode, final RequestBankInfoCheckSearchDTO content);

	/**
	 * 放款提现查询
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData searchFundsAccountDrawSearch(final String cooperorgCode, final RequestAccountDrawSearchDTO content);

	/**
	 * 借款人更换银行卡
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData searchFundsCardupdate(final String cooperorgCode, final RequestFundsCardupdateSearchDTO content);

	/**
	 * 借款人提现
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData searchFundsAccountDraw(final String cooperorgCode, final RequestFundsAccountDrawDTO content);

	/**
	 * 划扣借款人银行卡
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData debitFundsAccountdcard(final String cooperorgCode, final RequestDebitFundsAccountdcardDTO content);

	/**
	 * 代偿账户代还
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData transferFundsAccountdtorepay(final String cooperorgCode, final RequestTransferFundsAccountdtorepayDTO content);

	/**
	 * 还款通知
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData repaymentFundsNotice(final String cooperorgCode, final RequestRepaymentFundsNoticeDTO content);

	/**
	 * 发送短信验证码
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData messageFundsSend(final String cooperorgCode, final RequestMessageFundsSendDTO content);

	/**
	 * 资产冻结接口
	 * 
	 * @param cooperorgCode
	 * @param content
	 * @return @
	 */
	public JieYueResponseData freezeFundsAssest(final String cooperorgCode, final RequestFreezeFundsAssestDTO content);

}
